1
제네릭 코드를 위한 블루프린트
AI037Lesson 18
00:00

건축가가 되어 보세요. 단일 벽돌 집을 위한 고정된 계획을 그리는 대신, 나무, 철강, 유리 등에 적응할 수 있는 마스터 블루프린트 적응 가능한 설계를 만드세요. C++에서는 이것이 제네릭 프로그래밍.

1. 블루프린트 메커니즘

A 템플릿 매개변수 리스트 (예: template <typename T>)는 다음과 같은 자리 표시자를 도입합니다. 템플릿 타입 매개변수. 이들은 타입에 대한 변수처럼 작동합니다. 예를 들어, template <typename T> ostream &print(ostream &os, const T &obj), T T는 함수가 호출될 때만 결정됩니다.

2. 인스턴시에이션

컴파일러는 템플릿 자체를 머신 코드로 컴파일하지 않습니다. 대신, 인스턴시에이션 이 일어납니다: 컴파일러는 구체적인 템플릿 인자 가 제공될 때만 코드의 특정 버전을 생성합니다. 이러한 이유로 정의는 일반적으로 헤더 파일에 위치해야 합니다.

블루프린트compare<T>compare(int)compare(vector)오류: Sales_data

3. 타입 독립형 코드 작성하기

재사용성을 극대화하기 위해 최선의 실천법: 요구 사항을 최소화하세요. 단지 다음 연산자만 사용하여 코드를 작성하세요. < 연산자 (via less<T>)를 통해 타입에 대한 요구 사항을 줄입니다. 다른 연산자들인 >, <=, 및 >=보다 더 낮은 요구 사항을 줄입니다. 검증은 종종 지연되며, 컴파일러는 일반적으로 템플릿 자체를 컴파일하는 단계에서 많은 오류를 발견할 수 없습니다. 대부분의 오류는 인스턴시에이션 중에 나타납니다.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>